package com.zx.mes.hyl.auth.service;



import com.zx.mes.hyl.auth.model.Tuser;
import com.zx.mes.hyl.auth.pagemodel.Role;
import com.zx.mes.hyl.common.pagemodel.LayPageHelper;
import com.zx.mes.hyl.common.pagemodel.Tree;

import java.util.List;


/**
 * 角色业务逻辑
 * 
 * @author hyl
 * 
 */
public interface RoleServiceI {

	/**
	 * 添加 一个角色
	 * @param role 参数
	 * @throws Exception 如id等异常
	 */
	void add(Role role) throws Exception;

	/**
	 * 获得角色
	 * @param id 参数
	 * @return role
	 */
	Role get(String id);

	/**
	 * 编辑角色
	 * @param role 参数角色
	 * @throws Exception 编辑时名称已存在异常
	 */
	void edit(Role role) throws Exception;


	/**
	 * 获取角色list
	 * @param userId 参数
	 * @return list(role)
	 */
	List<Role> getRoles(String userId);

	/**
	 * 根据角色id删除一个角色
	 * @param id 参数id
	 */
	void delete(String id);

	/**
	 * 获得角色树(只能看到自己拥有的角色)
	 * @param tuser
	 * @return list(tree)
	 */
	List<Tree> tree(Tuser tuser);

	/**
	 * 获得角色树
	 * @param tuser
	 * @return list
	 */
	List<Tree> allTree(Tuser tuser);

	/**
	 * 获取所有的list(tree)
	 * @return list(tree)
	 */
	List<Tree> getAll();

	/**
	 * 为角色授权
	 * @param role 参数role
	 */
	void grant(Role role);


	/**
	 * 根据条件获得所有的角色
	 * @param role 参数role
	 * @param ph 参数ph(分页)
	 * @return list
	 */
	List<Role> findAll(Role role, LayPageHelper ph);

	/**
	 * 根据参数 role 提供的条件 获得角色的数目
	 * @param role 参数role
	 * @return long
	 */
	long count(Role role);
}
